/****************************************
* 4、编写一个算法，实现4阶杨辉魔方（阴图）。
*****************************************/

#include<stdio.h>
#include<malloc.h>

typedef struct{int col,row;int* data;} mat;

void print_mat(const mat* m){
    int i,j;
    printf("<Matrix %dx%d>\n",m->row,m->col);
    for(i=0;i<m->col;i++){
        for(j=0;j<m->row;j++)printf("%4d ",(m->data)[i*m->col+j]);
        putchar('\n');
    }
}

mat* gen_magic(){
    mat* m = malloc(sizeof(mat));
    m->row = m->col = 4;
    m->data = malloc(sizeof(int)*16);
    int i,j;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            if(i==j){
                m->data[i*m->col+j] = (4- i-1) * m->col + (4- j);
            }else if(i+j==3){
                m->data[i*m->col+j] = j * m->col + i + 1;
            }
            else m->data[i*m->col+j] = i*m->col+j+1;
        }
    }
    return m;
}

int main(){
    mat* m = gen_magic();
    print_mat(m);
    free(m->data);
    free(m);
    return 0;
}